package org.villacoapa.censo.web.xml.facade;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Transaction;
import org.villacoapa.censo.HibernateSessionFactory;
import org.villacoapa.censo.dao.Familia;
import org.villacoapa.censo.dao.FamiliaDAO;
import org.villacoapa.censo.web.dto.FamiliaDTO;
import org.villacoapa.censo.web.exception.FotoRegistradaException;
import org.villacoapa.censo.web.registro.Registro;
import org.villacoapa.censo.web.xml.parser.Parser;

public class SaveFacade {
	
	private static Logger log = Logger.getLogger(SaveFacade.class);
	
	public boolean saveFamilia(String xmlObjetct){
		FamiliaDAO dao = new FamiliaDAO();
		FamiliaDTO dto = (FamiliaDTO)Parser.xmlToObject(xmlObjetct, new FamiliaDTO());
		Familia familia = new Familia();
		familia.setIdFamilia(dto.getIdFamilia());
		familia.setApellido1(dto.getApellido1().toUpperCase());
		familia.setApellido2(dto.getApellido2().toUpperCase());
		List<Familia> list = dao.findByExample(familia);
		if(list.isEmpty()){
			Transaction tx = HibernateSessionFactory.getSession().beginTransaction();
			log.info("Insertando Familia:"+familia.getApellido1() + " "+ familia.getApellido2());
			dao.save(familia);
			tx.commit();
		}else{
			log.info("La familia que se intenta insertar ya existe en BD: "+familia.getApellido1()+" "+familia.getApellido2());
			return false;
		}
		return true;
	}
	
	public boolean saveRegistro(String xml) throws FotoRegistradaException, Exception{
			Registro registro = new Registro(xml);
			log.info(xml);
			registro.guardarRegistro();
			log.info("Se ha guardado un nuevo miembro exitosamente");
			return true;
	}
	
	public static void main(String[] args) {
		String xml = "<?xml version='1.0' ?>" +
        "<Familia>" +
        "<apellido1>" +
        	"Soto" +
        "</apellido1>" +
        "<apellido2>" +
        	"Ruiz" +
        "</apellido2>" +
        "</Familia>";
		
		xml = "<?xml version='1.0' ?><Familia><apellido1>Flores</apellido1><apellido2>Rosales</apellido2></Familia>";
	}

}
